/*
 * Toto je stack stavů implementovaný jako double-linked list. Tj. každý element
 * si drží odkaz na předchozí i následující element. Není implementován jako
 * cyklický, má tedy dva konce (odkazy na NULL).
 */
#ifndef STACK_H_
#define STACK_H_

#include "state.h"

/*
 * Element stacku. Drží si odkaz na přechozí element (previous), následující
 * element (next) a samotnou hodnotu stavu (value).
 */
typedef struct{
	void *previous;
	void *next;
	State *value;
} Element;


State *stackPop(void);
void stackPush(State *state);
int stackSize(void);

#endif
